#include <stdio.h>

#define SWAP(a, b) {int temp; temp = a; a = b; b = temp;}

void swap(int a, int b)
{
    int temp;
	temp = a;
	a    = b;
	b = temp;
}

/*********************************************************************************
 *宏定义的调用等价于代码直接替换
 *宏定义中代码替换发生在编译阶段
 *函数调用不是简单的代码直接替换
 *函数调用栈包括局部变量、返回地址 + 返回信息、形式参数（值传的常见错误发生在这里）
 *函数调用栈的建立发生在运行阶段
 ********************************************************************************/
int main()
{
    int a = 10;
	int b = 20;
    SWAP(a, b);
	printf("a=%d, b=%d \n", a, b);
	swap(a, b);
	printf("a=%d, b=%d \n", a, b);
    return 0;
}
